﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RecipeRecommender
{
    /*
    enum Ingredient {
    VEGETABLE,SPINACH, BROCOLLI, CABBAGE, POTATO, TURNIP, 
        BEANS, RED_BEAN, EGG, FLOUR, 
        MEAT,CHICKEN,DUCK,PORK,BEEF,VENISON,
    };
     * */

    /*
   enum Cuisine
   {
       WESTERN,
       CHINESE,
       VIETNAMESE,
       INDIAN
   }
    * */

    /*
    enum MealType
    {
        STARTER,
        APPETIZER,
        MAIN,
        SIDE,
        DESSERT
    }
     * */

    /*
    public enum CookingMethod
    {
        BOILED,
        STEAMED,
        GRILLED,
        BAKED
    }
     * */
    
    public class Recipe
    {

        public Recipe()
        {
            _Similarity = 0;
        }

        private double _Similarity;
        public double Similarity
        {
            get { return _Similarity; }
            set { _Similarity = value; }
        }

        private String _Name;
        public String Name
        {
            get { return _Name; }
            set { _Name = value; }
        }

        private  Cuisine _Cuisine;
        public Cuisine Cuisine
        {
            get { return _Cuisine; }
            set { _Cuisine = value; }
        }


        private CookingMethod _CookingMethod;
        public CookingMethod CookingMethod
        {
            get { return _CookingMethod; }
            set { _CookingMethod = value; }
        }

        private MealType _MealType;
        public MealType MealType
        {
            get { return _MealType; }
            set { _MealType = value; }
        }

        private List<Ingredient> _Ingredients;
        public List<Ingredient> Ingredients
        {
            get { return _Ingredients; }
            set { _Ingredients = value; }
        }

        private int? _CookingTime;
        public int? CookingTime
        {
            get { return _CookingTime; }
            set { _CookingTime = value; }
        }

        private int? _ServingPortion;
        public int? ServingPortion
        {
            get { return _ServingPortion; }
            set { _ServingPortion = value; }
        }

        private bool? _Spicy;
        public bool? Spicy
        {
            get { return _Spicy; }
            set { _Spicy = value; }
        }

        private bool? _Halal;
        public bool? Halal
        {
            get { return _Halal; }
            set { _Halal = value; }
        }

        private bool? _Healthy;
        public bool? Healthy
        {
            get { return _Healthy; }
            set { _Healthy = value; }
        }

        private bool? _Vegetarian;
        public bool? Vegetarian
        {
            get { return _Vegetarian; }
            set { _Vegetarian = value; }
        }

        private String _CookingInstructions;
        public String CookingInstructions
        {
            get { return _CookingInstructions; }
            set { _CookingInstructions = value; }
        }

        public Recipe clone(){
            Recipe recipe = new Recipe();
            recipe.CookingMethod = this.CookingMethod;
            recipe.CookingInstructions = this.CookingInstructions;
            recipe.CookingTime = this.CookingTime;
            recipe.Cuisine = this.Cuisine;
            recipe.Halal = this.Halal;
            recipe.Healthy = this.Healthy;

            List <Ingredient> IngredientListCopy = new List<Ingredient>();
            foreach(Ingredient ingredient in Ingredients)
                IngredientListCopy.Add(ingredient);
            recipe.Ingredients = IngredientListCopy;

            recipe.MealType = this.MealType;
            recipe.Name = this.Name;
            recipe.ServingPortion = this.ServingPortion;
            recipe.Spicy = this.Spicy;
            recipe.Vegetarian = this.Vegetarian;
            return recipe;
        }
    }
}
